package com.examinantsdk.bean

import androidx.annotation.Keep
import java.io.Serializable


/**
 *   Created by sunxunchao on 2021/9/22.
 */
@Keep
class VideoSignBean : Serializable {
    var exper: Int = -1
    var timeout: String = ""
    var us: String = ""
    var sign: String = ""
    var video_token: String = ""
}

//@Keep
//@Entity(
//    tableName = "tree_bean",
//)
//data class TreeBean(
//    @PrimaryKey
//    @ColumnInfo(name = "id")
//    var id: Int,
//    @ColumnInfo(name = "patent_id")
//    var patentId: Int,
//    @ColumnInfo(name = "title")
//    var title: String,
//    @ColumnInfo(name = "video_id")
//    var videoId: Int = 0,
//    @ColumnInfo(name = "catalog_id")
//    var catalog_id: Int? = null,
//    @ColumnInfo(name = "v_is_free")
//    @SerializedName("is_free")
//    var video_is_free: Int = 1,
//    @ColumnInfo(name = "tx_id")
//    var tx_id: String = "",
//    @ColumnInfo(name = "share_url")
//    var share_url: String? = null,
//    @Ignore
//    var isExpand: Boolean = true,
//    @ColumnInfo(name = "v_is_leaf")
//    @SerializedName("isLeaf")
//    var videoIsLeaf: Boolean = false,
//    @ColumnInfo(name = "v_is_video")
//    @SerializedName("isVideo")
//    var itIsVideo: Boolean = false,
//    @Ignore
//    var isSelected: Boolean = false,
//    @ColumnInfo(name = "last_end_time")
//    var last_end_time: Int = 0,
//    @ColumnInfo(name = "last_play_at")
//    var last_play_at: Int = 0,
//    @Ignore
//    var duration: Int = 0,
//    @ColumnInfo(name = "level")
//    var level: Int = 0,
//    @Ignore
//    var isExpandTag: Boolean = true,
//    @ColumnInfo(name = "url")
//    var url: String? = null,
//    @ColumnInfo(name = "appId")
//    var appId: Int = Constants.VIDEO_PLAY_APPID_JSJ,
//    @ColumnInfo(name = "course_id")
//    var courseId: Int = 0,
//    @ColumnInfo(name = "parent_name")
//    var parentName: String = "",
//    @Ignore
//    var dataId:Int = 0,
//    var live_status:Int = 0,
//    var live_start_at:String = ""
//) : YashaItem {
//    //    @PrimaryKey(autoGenerate = true)
////    var vid: Int = 0
//
//
//    @Ignore
//    var tag: Any? = null
//
////    @Ignore
////    var parentBean: TreeBean? = null
//
//    @Ignore
//    var itemStatus = false
//
//    @Ignore
//    var isChecked: Boolean = false
//
//    @Ignore
//    var sign_data: VideoSignBean? = null //防盗链参数
//
//    constructor() : this(
//        0,
//        0,
//        "",
//        0,
//        null,
//        1,
//        "",
//        null,
//        true,
//        false,
//        false,
//        false,
//        0,
//        0,
//        0,
//        0,
//        true
//    )
//
//    fun action(
//        parenTree: TreeBean?,
//        courseBean: CourseDetailBean.ContentBean?,
//        progressBar: ProgressButton,
//        imageView: ImageView,
//        lifecycleScope: LifecycleCoroutineScope,
//        loadingDialog: LoadingDialog?
//    ) {
//        if (tx_id.isEmpty()) {
//            ToastUtil.showLong(MyApplication.getInst(), "该视频资源不支持下载！！")
//            return
//        }
//        lifecycleScope.launch {
//            loadingDialog?.show()
//            url = url ?: getDownloadUrl(
//                courseBean?.player_id ?: Constants.VIDEO_PLAY_APPID_JSJ,
//                tx_id
//            )
//            if (url.isNullOrEmpty()) {
//                ToastUtil.showLong(MyApplication.getInst(), "该视频资源不支持下载！！")
//                loadingDialog?.dismiss()
//                return@launch
//            }
//            this@TreeBean.courseId = courseBean?.id ?: 0
//            val taskManager = url?.createTaskManager(tx_id)
//            when (taskManager?.currentStatus() ?: Normal()) {
//                is Normal -> taskManager?.start()
//                is Pending -> taskManager?.stop()
//                is Started -> taskManager?.stop()
//                is Downloading -> taskManager?.stop()
//                is Failed -> taskManager?.start()
//                is Paused -> taskManager?.start()
//                is Completed -> {
//                }
//                is Deleted -> taskManager?.start()
//            }
//            imageView.setImageResource(stateIcon(taskManager?.currentStatus() ?: Normal()))
//            tag = taskManager?.subscribe {
//                progressBar.setStatus(it)
//                imageView.setImageResource(stateIcon(it))
//            }
//            VideoDBManger.withVideoDao { dao ->
//                parentName = parenTree?.title ?: ""
//                dao.insert(this@TreeBean)
//            }
//            VideoDBManger.withCourseDao { dao ->
//                dao.insert(
//                    CourseEntity(
//                        courseId,
//                        courseBean?.name,
//                        courseBean?.cover,
//                        System.currentTimeMillis()
//                    )
//                )
//            }
//            loadingDialog?.dismiss()
//        }
//    }
//
//
//    fun action(
//        progressBar: ProgressButton,
//        imageView: ImageView,
//        tv: TextView,
//        lifecycleScope: LifecycleCoroutineScope,
//        loadingDialog: LoadingDialog?
//    ) {
//        if (tx_id.isEmpty()) {
//            ToastUtil.showLong(MyApplication.getInst(), "该视频资源不支持下载！！")
//            return
//        }
//        lifecycleScope.launch {
//            loadingDialog?.show()
//            url = url ?: getDownloadUrl(
//                appId,
//                tx_id
//            )
//            if (url.isNullOrEmpty()) {
//                ToastUtil.showLong(MyApplication.getInst(), "该视频资源不支持下载！！")
//                loadingDialog?.dismiss()
//                return@launch
//            }
//            val taskManager = url?.createTaskManager(tx_id)
//            when (taskManager?.currentStatus() ?: Normal()) {
//                is Normal -> taskManager?.start()
//                is Pending -> taskManager?.stop()
//                is Started -> taskManager?.stop()
//                is Downloading -> taskManager?.stop()
//                is Failed -> taskManager?.start()
//                is Paused -> taskManager?.start()
//                is Completed -> {
//                }
//                is Deleted -> taskManager?.start()
//            }
//            imageView.setImageResource(stateIcon(taskManager?.currentStatus() ?: Normal()))
//            tag = taskManager?.subscribe {
//                progressBar.setStatus(it)
//                imageView.setImageResource(stateIcon(it))
//                if (it is Completed) {
//                    tv.text = url?.file()?.length()?.convertFileSize()
//                }
//            }
//            loadingDialog?.dismiss()
//        }
//    }
//
//    fun subscribe(
//        progressBar: ProgressButton,
//        imageView: ImageView,
//        lifecycleScope: LifecycleCoroutineScope
//    ) {
//
//        lifecycleScope.launch {
//            VideoDBManger.withVideoDao { dao ->
//                url = url ?: dao.query(tx_id)?.url
//                val taskManager = url?.createTaskManager(tx_id)
//                var currentStatus = (taskManager?.currentStatus() ?: Normal())
//                currentStatus = if (currentStatus is Normal) {
//                    if (url?.file()?.exists() == true) {
//                        Completed()
//                    } else {
//                        Normal()
//                    }
//                } else {
//                    Normal()
//                }
//                progressBar.setStatus(currentStatus)
//                imageView.setImageResource(stateIcon(currentStatus))
//
//                tag = taskManager?.subscribe {
//                    progressBar.setStatus(it)
//                    imageView.setImageResource(stateIcon(it))
//                }
//            }
//        }
//    }
//
//    fun subscribe2(
//        progressBar: ProgressButton,
//        imageView: ImageView,
//        tv: TextView,
//        lifecycleScope: LifecycleCoroutineScope
//    ) {
//
//        lifecycleScope.launch {
//            VideoDBManger.withVideoDao { dao ->
//                url = url ?: dao.query(tx_id)?.url
//
//                val taskManager = url?.createTaskManager(tx_id)
//                var currentStatus = (taskManager?.currentStatus() ?: Normal())
//                currentStatus = if (currentStatus is Normal) {
//                    if (url?.file()?.exists() == true) {
//                        Completed()
//                    } else {
//                        Normal()
//                    }
//                } else {
//                    Normal()
//                }
//                progressBar.setStatus(currentStatus)
//                imageView.setImageResource(stateIcon(currentStatus))
//                if (currentStatus is Completed) {
//                    imageView.visibility = View.GONE
//                    progressBar.visibility = View.GONE
//                }
//
//                tag = taskManager?.subscribe {
//                    progressBar.setStatus(it)
//                    imageView.setImageResource(stateIcon(it))
//                    if (it is Completed) {
//                        imageView.visibility = View.GONE
//                        progressBar.visibility = View.GONE
//                        tv.text = url?.file()?.length()?.convertFileSize()
//                    }
//                }
//            }
//        }
//    }
//
//    fun dispose() {
//        tag?.let {
//            url?.createTaskManager(tx_id)?.dispose(it)
//        }
//    }
//
//    override fun cleanUp() {
//        dispose()
//    }
//
//    override fun areItemsTheSame(other: Differ): Boolean {
//        if (other !is TreeBean) return false
//        return other == this
//    }
//
//    override fun areContentsTheSame(other: Differ): Boolean {
//        if (other !is TreeBean) return false
//        return other.itemStatus == itemStatus
//    }
//
//    //Set the payload
//    override fun getChangePayload(other: Differ): Any? {
//        if (other !is TreeBean) return null
//        return other.itemStatus
//    }
//
//}

interface OnLoadingListener {
    fun start()
    fun end()
    fun complete()
}
